๐ ๋ ๋ฒจ 1์ง๋ฆฌ ์ฌ์ด ๋ฌธ์ .
๋ฌธ์
์ ์
์ฌ์ ๋ฌด์ง๋ ๊ฒ์ํ ๋ถ๋ ์ด์ฉ์๋ฅผ ์ ๊ณ ํ๊ณ
์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋ฉ์ผ๋ก ๋ฐ์กํ๋ ์์คํ
์ ๊ฐ๋ฐํ๋ ค ํฉ๋๋ค.
๋ฌด์ง๊ฐ ๊ฐ๋ฐํ๋ ค๋ ์์คํ
์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๊ฐ ์ ์ ๋ ํ ๋ฒ์ ํ ๋ช
์ ์ ์ ๋ฅผ ์ ๊ณ ํ ์ ์์ต๋๋ค.
- ์ ๊ณ ํ์์ ์ ํ์ ์์ต๋๋ค. ์๋ก ๋ค๋ฅธ ์ ์ ๋ฅผ ๊ณ์ํด์ ์ ๊ณ ํ ์ ์์ต๋๋ค.
- ํ ์ ์ ๋ฅผ ์ฌ๋ฌ ๋ฒ ์ ๊ณ ํ ์๋ ์์ง๋ง,
๋์ผํ ์ ์ ์ ๋ํ ์ ๊ณ ํ์๋ 1ํ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค.
- k๋ฒ ์ด์ ์ ๊ณ ๋ ์ ์ ๋ ๊ฒ์ํ ์ด์ฉ์ด ์ ์ง๋๋ฉฐ,
- ํด๋น ์ ์ ๋ฅผ ์ ๊ณ ํ ๋ชจ๋ ์ ์ ์๊ฒ ์ ์ง ์ฌ์ค์ ๋ฉ์ผ๋ก ๋ฐ์กํฉ๋๋ค.
- ์ ์ ๊ฐ ์ ๊ณ ํ ๋ชจ๋ ๋ด์ฉ์ ์ทจํฉํ์ฌ
๋ง์ง๋ง์ ํ๊บผ๋ฒ์ ๊ฒ์ํ ์ด์ฉ ์ ์ง๋ฅผ ์ํค๋ฉด์ ์ ์ง ๋ฉ์ผ์ ๋ฐ์กํฉ๋๋ค.
- ํฌ์ธํธ : k๋ฒ ์ด์ ์ ๊ณ ๋ ์ ์ ๋ ๊ฒ์ํ ์ด์ฉ์ด ์ ์ง๋๊ณ , ์ ์ง๋ ๋ ์ ๊ณ ํ ์ฌ๋๋ค์๊ฒ ์ ์ง ์ฌ์ค์ ๋ฉ์ผ๋ก ๋ณด๋ธ๋ค. ์ด๋ ์ ์ ์๊ฒ ๋ช ํ ๋ฉ์ผ์ด ๋ฐ์ก๋ ๊ฑด์ง๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ์.
- ๋ฌธ์ ๋ฅผ ์ ์์ฝ๊ณ ํ๊ฐ๋ ค์ ์ฒ์์ ์ฝ๋๋ฅผ ์๋ชป ์์ฑํ๋ค. ๋ฌธ์ ๋ฅผ ์ ์ฝ๊ณ ํฌ์ธํธ๋ฅผ ๋จผ์ ์ก์์ผํจ. ๊ตญ์ด ํธ๋ ์ค ใ
ํ์ด
function solution(id_list, report, k) {
const answer = {}
// ์ ๊ณ ์ ์ Objectํ
const reportInfo = id_list.reduce((prev, id) => {
prev[id] = new Set()
return prev
}, {})
// ์ ๊ณ ์ ์ ๋ค Set์ ํธ์
report.forEach(data => {
const [reportUser, reportedUser] = data.split(" ")
reportInfo[reportedUser].add(reportUser)
})
// ์ ๊ณ ๋นํ ์ ์ ์ ์ง ์ฌ๋ถ ํ์ธ
id_list.forEach(id => {
if (reportInfo[id].size >= k) {
// ์ ์ง ๋นํ ์ ์ ๋ฉ์ผ ์นด์ดํธ
reportInfo[id].forEach(reportedId => {
if (answer[reportedId]) answer[reportedId] += 1
else answer[reportedId] = 1
})
}
})
return id_list.map(id => answer[id] || 0)
}
- Map์ผ๋ก ๊ด๋ฆฌํด์ฃผ์ด๋ ๋๋๋ฐ, ๊ทธ๋ฅ Object๋ง ์ฌ์ฉํด์ ๊ตฌํ.
- ํ ์คํธ ๋ชจ๋ ํต๊ณผ. ํธ๋๋ฐ 30๋ถ ์ ๋ ๊ฑธ๋ฆฐ ๋ฏ. ๋ค์๋ถํฐ๋ ์๊ฐ ์ธก์ ๋ ํด์ผํ ๋ฏ.